package com.pet.context;
//ThreadLocal是Java中的一个类，它为每个使用该变量的线程提供一个独立的变量副本。
// 这意味着每个线程都可以独立地读取和修改其ThreadLocal变量，而不会与其他线程的ThreadLocal变量发生冲突。
public class BaseContext {//使用了ThreadLocal来存储和获取与当前线程相关的ID

    //处理多线程应用
    //ThreadLocal<T>类用于提供线程局部变量。这些变量不同于它们的正常变量，因为每一个访问这个变量的线程都有其自己独立初始化的变量副本。
    //ThreadLocal实例通常用作保存线程上下文信息，比如用户ID、事务信息或其他任何需要按线程分别存储的信息。
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    //这个方法用于在当前线程的ThreadLocal中设置一个ID。其他线程无法访问或修改这个ID，因为它是线程局部的。
    public static void setCurrentId(Long id) {
        threadLocal.set(id);
    }

    //这个方法用于获取当前线程在ThreadLocal中存储的ID。如果当前线程没有设置ID，则返回null。
    public static Long getCurrentId() {
        return threadLocal.get();
    }

    //这个方法用于从当前线程的ThreadLocal中移除ID。
    // 当线程结束时，其ThreadLocal变量通常会被垃圾收集器自动清理，但如果你想要提前清理，可以使用这个方法。
    public static void removeCurrentId() {
        threadLocal.remove();
    }

}
